﻿Imports WSEntidades
Imports Utilerias
Imports WSDatos
Imports System.Transactions
Public Class CDonatariasBL
    Private Function EsValidoParaRegistrar(ByRef pDonatarias As CDonatariasBE, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try
            If (pDonatarias.Status = CDonatariasBE.EstatusDonat.Activa) Then
                If (String.IsNullOrWhiteSpace(pDonatarias.RegimenFiscal)) Then
                    mensaje &= "El Régimen Fiscal es requerido para la emisión de Recibos de Donativos." & vbCrLf
                Else
                    pDonatarias.RegimenFiscal = pDonatarias.RegimenFiscal.Trim
                    If (pDonatarias.RegimenFiscal.Length > 100) Then
                        pDonatarias.RegimenFiscal = pDonatarias.RegimenFiscal.Substring(0, 100)
                    End If
                End If

                If (pDonatarias.Donataria IsNot Nothing) Then
                    pDonatarias.Donataria.version = "1.1"
                    If (String.IsNullOrEmpty(pDonatarias.Donataria.noAutorizacion)) Then
                        mensaje &= "El campo Numero de Autorizacion no puede ir vacio." & vbCrLf
                    Else
                        pDonatarias.Donataria.noAutorizacion = pDonatarias.Donataria.noAutorizacion.Trim
                        If (pDonatarias.Donataria.noAutorizacion.Length > 20) Then
                            pDonatarias.Donataria.noAutorizacion = pDonatarias.Donataria.noAutorizacion.Substring(0, 20)
                        End If
                    End If

                    If (String.IsNullOrEmpty(pDonatarias.Donataria.leyenda)) Then
                        mensaje &= "El campo Leyenda no puede ir vacio." & vbCrLf
                    Else
                        pDonatarias.Donataria.leyenda = pDonatarias.Donataria.leyenda.Trim
                        If (pDonatarias.Donataria.leyenda.Length > 500) Then
                            pDonatarias.Donataria.leyenda = pDonatarias.Donataria.leyenda.Substring(0, 500)
                        End If
                    End If
                Else
                    mensaje &= "Favor de especificar los valores para Donataria." & vbCrLf
                End If
            Else
                If (String.IsNullOrWhiteSpace(pDonatarias.RegimenFiscal)) Then
                    pDonatarias.RegimenFiscal = ""
                End If
                If (pDonatarias.Donataria Is Nothing) Then
                    pDonatarias.Donataria = New DONAT_11.Donatarias
                    pDonatarias.Donataria.version = "1.1"
                    pDonatarias.Donataria.noAutorizacion = ""
                    pDonatarias.Donataria.leyenda = ""
                End If
            End If

            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "CDonatariasBL.EsValidoParaRegistrar")
            mensaje &= ex.Message
            Return False
        End Try
    End Function

    Public Function ActualizaDonatarias(ByVal TokenConexion As String, ByVal Donatarias As CDonatariasBE, ByRef detResp As DetalleRespuesta) As Boolean
        detResp.Mensajes = ""
        Dim DonatDAL As CDonatariasDAL = New CDonatariasDAL("")
        Try
            TokenConexion = RijndaelSimple.desencriptaDefault(TokenConexion)
            If (EsValidoParaRegistrar(Donatarias, detResp.Mensajes)) Then
                DonatDAL = New CDonatariasDAL(TokenConexion)
                Using transacCta As TransactionScope = New TransactionScope()
                    If (DonatDAL.actualizaDonatariasComp(Donatarias)) Then
                        If (DonatDAL.actualizaDonatariasConfig(Donatarias)) Then
                            transacCta.Complete()
                            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                                     "Datos del complemento donatarias actualizados.")
                            Return True
                        Else
                            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueActualizado,
                                                     "No se pudo realizar la actualización de los Datos del complemento donatarias." & vbCrLf & detResp.Mensajes)
                            Return False
                        End If
                    Else
                        detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueActualizado,
                                                     "No se pudo realizar la actualización de los Datos del complemento donatarias." & vbCrLf & detResp.Mensajes)
                        Return False
                    End If
                End Using
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                         "La informacion no es valida para actualizar: " & vbCrLf & detResp.Mensajes)
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "CDonatariasBL.ActualizaDonatarias")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                        detResp.Mensajes & "Excepción al actualizar Complemento Donatarias: " & ex.Message)
            Return False
        Finally
            DonatDAL = Nothing
        End Try
    End Function

    Public Function GetDonatarias(ByVal tokenConexion As String, ByRef detResp As DetalleRespuesta) As CDonatariasBE
        detResp.Mensajes = ""
        Dim donatDAL As CDonatariasDAL = New CDonatariasDAL("")
        Dim donatBE As CDonatariasBE
        Try
            donatDAL = New CDonatariasDAL(RijndaelSimple.desencriptaDefault(tokenConexion))
            donatBE = donatDAL.getDonatarias()
            If (donatBE IsNot Nothing) Then
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                         "Se obtuvo la información del complemento donatarias con éxito.")
                Return donatBE
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_RegistroInexistenteOInactivo,
                                         "No se obtuvo la información del complemento donatarias" & vbCrLf & detResp.Mensajes)
                Return Nothing
            End If
        Catch ex As Exception
            Log.LogException(ex, "CDonatariasBL.GetDonatarias")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                        detResp.Mensajes & "Excepción al obtener información del complemento donatarias: " & ex.Message)
            Return Nothing
        Finally
            donatDAL = Nothing
            donatBE = Nothing
        End Try
    End Function

    Private Function EsValidoParaGetDonatarias(ByRef pCveComp As String, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try
            If (String.IsNullOrEmpty(pCveComp)) Then
                mensaje &= "El campo clave del Complemento donatarias no puede ir vacio." & vbCrLf
            End If
            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "CDonatariasBL.EsValidoParaGetDonatarias")
            mensaje &= ex.Message
            Return False
        End Try
    End Function

End Class
